﻿using System;
namespace GX
{
    public delegate void TickDelegate(ITickable ticker);
    public interface ITickable
    {
        bool isRealtime { get; }
        bool isFrame { get; }
        int startDelay { get; }
        int interval { get; }
        int totalCount { get; }
        int repeatedCount { get; }
        bool isStarted { get; }
        int elapsedTime { get; }
        int totalElapsedTime { get; }
        bool isDone { get; }
    }
    public interface ITickManager:IService
    {
        int time { get; }
        int deltaTime { get; }
        int realTime { get; }
        int deltaRealTime { get; }
        int frameCount { get; }
        void Update(int frameCount, float time, float realTime);
        int Tick(int interval, int repeatCount, TickDelegate del, int startDelay, bool isRealtime);
        bool Cancel(int tickID);
    }
}